#pragma once

#include "Type.h"
#include "DecoratedType.h"

//type of TOptional<T>
class WHENGINE_API CTOptionalType: public CType
{
public:
    CTOptionalType();

    static CTOptionalType* GetStaticType();

    static CString CreateTypeName(const CString& ElementType);
    static STypeID CreateID(const SDecoratedType & ElementType);

protected:
    static CString PlaceholderName;

};

//type of TOptional<int> etc
class WHENGINE_API CTOptionalTypeGenerialized: public CType
{

public:

    CTOptionalTypeGenerialized(
        const SDecoratedType& InElementType
        ,ETypeFlags InFlags);

    CType* GetInnerType() const
    {
        return InnerType;
    }
    CType* InnerType=nullptr;
    
protected:
   
   

};